//package com.amuse.amuse.config;
//
//import com.amuse.amuse.service.impl.UserDetailsServiceImpl;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//import org.springframework.security.crypto.password.PasswordEncoder;
//
///**
// * @author juwujie
// */
//@Configuration
//@EnableWebSecurity
//public class SecurityConfig extends WebSecurityConfigurerAdapter {
//
//    /**
//     * SecurityConfig 类用于配置 Spring Security。
//     * 它通过 UserDetailsServiceImpl 服务来处理用户细节，并配置密码编码器和安全规则。
//     */
//    private final UserDetailsServiceImpl studentDetailService;
//
//    /**
//     * 构造函数注入 UserDetailsServiceImpl 服务。
//     *
//     * @param studentDetailService 用户详情服务，用于验证用户身份。
//     */
//    public SecurityConfig(UserDetailsServiceImpl studentDetailService) {
//        this.studentDetailService = studentDetailService;
//    }
//
//    /**
//     * 定义密码编码器 bean。
//     *
//     * @return 返回一个 BCryptPasswordEncoder 实例，用于加密和验证密码。
//     */
//    @Bean
//    public PasswordEncoder passwordEncoder() {
//        return new BCryptPasswordEncoder();
//    }
//
//    /**
//     * 配置认证管理器。
//     *
//     * 此方法用于配置用户认证的细节，如从何处获取用户详情和使用哪种密码编码器。
//     *
//     * @param auth 认证管理器构建器，用于配置用户认证。
//     * @throws Exception 如果配置出错。
//     */
//    @Override
//    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//        auth.userDetailsService(studentDetailService).passwordEncoder(passwordEncoder());
//    }
//
//    /**
//     * 配置 HTTP 安全性。
//     *
//     * 此方法用于配置哪些 HTTP 请求需要认证，以及登录和注销的处理方式。
//     *
//     * @param http HTTP 安全配置对象，用于配置安全规则。
//     * @throws Exception 如果配置出错。
//     */
//    @Override
//    protected void configure(HttpSecurity http) throws Exception {
//        // 允许所有访问根路径的请求
//        // 配置HTTP安全策略，例如允许哪些路径无需认证，哪些路径需要特定角色等
//        http.authorizeRequests()
//                .antMatchers("/").permitAll()
//                // 其他所有请求都需要认证
//                .anyRequest().authenticated()
//                .and()
//                // 配置登录页面和登录处理
//                .formLogin().loginPage("/login").permitAll()
//                .and()
//                // 配置注销功能
//                .logout().permitAll();
//    }
//}
